package com.example.blog.service;

import com.example.blog.entity.Article;
import com.example.blog.mapper.ArticleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

/**
 * 文章服务类，处理文章相关的业务逻辑
 * 包括文章的创建、查询、更新和删除等功能
 */
@Service
public class ArticleService {

    @Autowired
    private ArticleMapper articleMapper;

    /**
     * 创建新文章
     * @param article 文章信息对象，包含标题、内容和作者ID
     * @return 创建成功的文章对象
     */
    public Article createArticle(Article article) {
        // 设置文章创建时间为当前时间
        article.setCreatedAt(new Timestamp(new Date().getTime()));
        
        // 调用Mapper层保存文章
        articleMapper.createArticle(article);
        
        return article;
    }

    /**
     * 获取所有文章列表
     * @return 文章列表，按创建时间降序排列
     */
    public List<Article> getAllArticles() {
        return articleMapper.getAllArticles();
    }

    /**
     * 根据ID获取文章详情
     * @param id 文章ID
     * @return 文章详细信息，包括作者信息
     */
    public Article getArticleById(Long id) {
        return articleMapper.getArticleById(id);
    }

    /**
     * 更新文章信息
     * @param article 文章信息对象
     * @return 是否更新成功
     */
    public boolean updateArticle(Article article) {
        return articleMapper.updateArticle(article) > 0;
    }

    /**
     * 删除文章
     * @param id 文章ID
     * @return 是否删除成功
     */
    public boolean deleteArticle(Long id) {
        return articleMapper.deleteArticle(id) > 0;
    }

    /**
     * 获取指定用户的所有文章
     * @param userId 用户ID
     * @return 该用户发布的文章列表
     */
    public List<Article> getArticlesByUserId(Long userId) {
        return articleMapper.getArticlesByUserId(userId);
    }
}